#!/bin/bash
###############################################################################
# @用例ID: 20221021-170203-436971716
# @用例名称: yum-install-whitelist
# @用例级别: 3
# @用例标签:
# @用例类型: 功能测试
# @自动化: 1
###############################################################################
[ -z "$TST_TS_TOPDIR" ] && {
    TST_TS_TOPDIR="$(realpath "$(dirname "$0")/..")"
    export TST_TS_TOPDIR
}
source "${TST_TS_TOPDIR}/tst_common/lib/common.sh" || exit 1
###############################################################################

g_tmpdir="$(mktemp -d)"

tc_setup() {
    msg "this is tc_setup"
    # @预置条件: 系统正常部署，配置默认yum软件源
    # @预置条件: 以root用户执行用例
    # @预置条件: 系统根分区空间充足，满足安装所有软件包的需求
    assert_true [ "$(whoami)" == "root" ]
    return 0
}

do_test() {
    msg "this is do_test"

    # @测试步骤:1: 获取当前repo list和对应的基线
    local ts_release_type
    local whitelist

    ts_release_type="$(get_ts_release_type)"
    if [ -n "$1" ]; then
        msg "the testcase has a arg whitelist to test: $1"
        whitelist="$(realpath "$1")"
    else
        ts_release_type="$(get_ts_release_type)"
        whitelist="$(realpath "./yum/${ts_release_type}.package.whitelist")"
    fi
    assert_true [ -f "$whitelist" ]
    assert_true yum clean all
    assert_true yum makecache

    # @测试步骤:2: 列出白名单的软件包并进行安装(将test_yum_install换成test_yum_only_install测只安装，不移除)
    # @预期结果:2: 软件包安装正常
    disable_scl_repo
    assert_true test_yum_install "$g_tmpdir" "$whitelist"

    return 0
}

tc_teardown() {
    msg "this is tc_teardown"
    rm -rfv "$g_tmpdir" || return 1
    return 0
}

###############################################################################
tst_main "$@"
###############################################################################
